package com.hyz.service.permission;

import com.hyz.model.dto.ApplicantAsRequest;
import com.hyz.model.vo.*;
import pojo.ResponseResult;
import pojo.asset.asset.AssetClasses;

import java.util.List;
import java.util.Map;

/**
 * @author HGD
 * @date 2022/10/9 0:05
 */
public interface ApplicantService {
    /**
     * 资产借调人员获取所有的可借资产
     *
     * @return 所有可借资产
     */
    ResponseResult<GetAllowBorrowAssetsResponse> getAllowBorrowAssets();

    /**
     * 借调人员获取借调记录
     *
     * @return 借调记录
     */
    ResponseResult<List<AssetSecondmentResponse>> getAssetSecondments();

    /**
     * 资产借调人员创建借调申请
     *
     * @param request 传入资产名，资产种类，借调理由，借调种类
     * @return 借调人员的借调记录
     */
    ResponseResult<List<AssetSecondmentResponse>> insertAssetSecondment(ApplicantAsRequest request);

    /**
     * 申请人查询维修申请
     *
     * @return 维修申请
     */
    ResponseResult<List<AssetMaintenanceResponse>> apGetAssetMaintenance();

    /**
     * 申请人创建维修申请
     *
     * @param assetId 资产id
     * @return 维修申请
     */
    ResponseResult<List<AssetMaintenanceResponse>> insertAssetMaintenance(Long assetId);

    /**
     * 申请人获取资产报废申请
     *
     * @return 报废申请
     */
    ResponseResult<List<AssetRetirementResponse>> apGetAssetRetirement();

    /**
     * 申请人创建报废申请
     *
     * @param assetId 资产id
     * @return 报废申请
     */
    ResponseResult<List<AssetRetirementResponse>> insertAssetRetirement(Long assetId);

    /**
     * 申请人根据资产种类获取资产列表
     *
     * @param classes 资产种类
     * @return 资产列表
     */
    ResponseResult<Map<String, List<GetAllowBorrowAssetsByClassesResponse>>> getAllowBorrowAssetsByClasses(AssetClasses classes);
}
